<?php 
class CategoryController extends Controller{
	private $model;
	public function __Construct(){
		parent::__construct();
		$this->model=K("Cate");
		
	}
	public function index(){
//		获得分类数据
        $cateData=$this->model->all();
		$cateData=Data::tree($cateData,'cname','id');
	

//		分配分类数据
		$this->assign('cateData',$cateData);
		$this->display();
	}
	public function addTop(){
		if(IS_POST){
			if(!$this->model->addData()){
				$this->error($this->model->error);
			}
			$this->success("顶级分类添加成功");
		}
//		获得类型数据
        $alltype=K("Type")->all();
	
		
		
		$this->assign("alltype",$alltype);
		$this->display();
	}
	public function addSon(){
//		获得id作为新分类的pid
        $id=$_GET['id'];
	
		if(IS_POST){
			
			$this->data['pid']=$id;
			if(!$this->model->addData()){
				$this->error($this->model->error);
			}
			$this->success("添加成功");
			
			
			
		}
//		获得父级分类名称
        $pData=$this->model->where("id='{$id}'")->find();
		$this->assign("pData",$pData);
//		所属类型
        $alltype=K("Type")->all();
		
		$this->assign("alltype",$alltype);
		
		$this->display();
	}
	public function edit(){
		$id=$_GET['id'];
//		获得旧数据
//      如果有提交
        if(IS_POST){
        	
        	if(!$this->model->updateData($id)){
        		$this->error($this->model->error);
        	};
			$this->success("修改成功");
        }
      

        $oldData=$this->model->where("id='{$id}'")->find();

		$pid=$oldData['pid'];
		if($pid==0){
			$pname="顶级分类";
		}else{
			$pname=K("Cate")->where("id='{$pid}'")->getField('cname',true);
//			p($pname);

			$pname=$pname[0];
		}
//		所属分类
		$oldData['pname']=$pname;
	

	    $this->assign('oldData',$oldData);
//		所有可能分类
         $allCate=K("Cate")->all();
	
//		 将所有不属于本类及其子类的的分类集合获得
         

		 $temp=$this->model->getSon($allCate,$id);
		 $temp[]=$id;
		
		$cateData=array();
		 foreach($allCate as $k=>$v){
		 	if(!in_array($v['id'],$temp)){
		 		$cateData[]=$v;
		 	}
		 }

		  $this->assign("cateData",$cateData);
		 

//		所属类型
		$typeData=K("Type")->all();
	    $this->assign('typeData',$typeData);
	
		$this->display();
	}
    public function del(){
//  	获得删除的id
        $id=$_GET['id'];
//		先看有没有子集,若有子集则弹出你要删除的有子集，若要删除请先删除子集
        if($this->hasson($id)){
        
        	$this->error("请先删除子集");
			
        }else{
        	$this->model->where("id='{$id}'")->delete();
        }
		$this->success("删除成功");
        

//      并且删除
    }
	public function hasson($id){
	   $sons=$this->model->where("pid='{$id}'")->all();
	   return $sons;
	   
		
	}


}
?>